Messung und Berechnung der SPS-CPU-Last für verschiedene OB-Typen
| LGF_MeasureCpuLoad (FB) | ||||||||
|---|---|---|---|---|---|---|---|---|
| Bool | enable | valid | Bool | |||||
| Bool | reset | busy | Bool | |||||
| Real | loadCascade | error | Bool | |||||
| LGF_typeMeasureCpuLoad_Configuration | configuration | status | Word | |||||
| averagingActive | Bool | |||||||
| loadCascadeActive | Bool | |||||||
| cycleTimeMin | LTime | |||||||
| cycleTimeActual | LTime | |||||||
| cycleTimeMax | LTime | |||||||
| cycleTimeMaxConfigured | LTime | |||||||
| runtime | LReal | |||||||
| cpuLoad | Real | |||||||
| comLoad | Real | |||||||
| comLoadConfigured | Real | |||||||
| limitWarning | Bool | |||||||
| limitAlarm | Bool | |||||||
| resultsCyclic | Array[0..#LAST_CYCLIC_BLOCK_INDEX] of LGF_typeMeasureCpuLoad_ResultBlock | |||||||
| results | Array[0..#LAST_BLOCK_INDEX] of LGF_typeMeasureCpuLoad_ResultBlock | |||||||
| diagnostics | LGF_typeDiagnostics | |||||||
| Bezeichner | Datentyp | Default Wert | Beschreibung |
|---|---|---|---|
| enable | Bool | FALSE | TRUE: Freigabe der Funktionalität des FB |
| reset | Bool | FALSE | Steigende Flanke: Rücksetzen aller internen Werte und auch der SPS-CPU-Timing-Statistik |
| loadCascade | Real | 0.0 | Prozentualer Lastwert aus einem anderen `LGF_MeasureCpuLoad` [%] (Connect `cpuLoad` aus Vorgängerinstanzaufruf) |
| configuration | LGF_typeMeasureCpuLoad_Configuration | --- | Dieser UDT gehört zum Modul `LGF_MeasureCpuLoad` und listet alle möglichen Parameter zur Konfiguration des Verhaltens auf. |
| Bezeichner | Datentyp | Beschreibung |
|---|---|---|
| valid | Bool | TRUE: Gültiger Satz von Ausgangswerten am FB vorhanden |
| busy | Bool | TRUE: FB ist noch nicht beendet, neue Ausgangswerte können erwartet werden |
| error | Bool | TRUE: Bei der Ausführung des FBs ist ein Fehler aufgetreten |
| status | Word | 16#0000 - 16#7FFF: Status des FB, 16#8000 - 16#FFFF: Fehlererkennung |
| averagingActive | Bool | TRUE: Mittelwertbildung der Istwerte aktiv |
| loadCascadeActive | Bool | TRUE: Lastberechnungskaskade aktiv |
| cycleTimeMin | LTime | Minimale Zykluszeit [ms] |
| cycleTimeActual | LTime | Aktuelle Zykluszeit [ms] |
| cycleTimeMax | LTime | Maximale Zykluszeit [ms] |
| cycleTimeMaxConfigured | LTime | Konfigurierte maximale Zykluszeit [ms] (in der Hardware-Konfiguration der SPS) |
| runtime | LReal | Aktuelle Zykluszeit inkl. unterbechungen [ms] |
| cpuLoad | Real | Aktuelle SPS-CPU-Auslastung [%] |
| comLoad | Real | Aktuelle Kommunikationslast [%] |
| comLoadConfigured | Real | Konfigurierte Kommunikationsauslastung [%] |
| limitWarning | Bool | Last über dem konfigurierten Schwellenwert 'configuration.limitWarning' |
| limitAlarm | Bool | Laden von mehr als dem konfigurierten Schwellenwert 'configuration.limitAlarm' |
| resultsCyclic | Array[0..#LAST_CYCLIC_BLOCK_INDEX] of LGF_typeMeasureCpuLoad_ResultBlock | Ergebnisse des zyklischen OB-Auslesens |
| results | Array[0..#LAST_BLOCK_INDEX] of LGF_typeMeasureCpuLoad_ResultBlock | Ergebnisse von NICHT-zyklischen OB-Auslesungen |
| diagnostics | LGF_typeDiagnostics | Diagnosestruktur zur Speicherung und Übertragung von Diagnoseinformationen von Blöcken über die Schnittstelle. |
| Code / Wert | Bezeichner / Beschreibung |
|---|---|
| 16#7000 | STATUS_NO_CALL Kein Auftrag wird gerade bearbeitet |
| 16#7001 | STATUS_FIRST_CALL Erster Aufruf nach Eingang eines neuen Auftrags (steigende Flanke 'Freigabe') |
| 16#7002 | STATUS_SUBSEQUENT_CALL Folgeaufruf bei aktiver Bearbeitung ohne weitere Angaben |
| 16#8600 | ERR_UNDEFINED_STATE Fehler: Aufgrund eines undefinierten Zustands im Zustandsautomaten |
| 16#8601 | ERROR_RTINFO_CONFIGURED_MAX_CYCLETIME Fehler: RT INFO Lesen konfigurierte MAX-Zykluszeit Information |
| 16#8602 | ERROR_RTINFO_CONFIGURED_COM_LOAD Fehler: RT INFO Lesen konfigurierte COM Load Information |
| 16#8610 | ERROR_RTINFO_ACTUAL_CYCLETIME Fehler: RT INFO Lesen aktuelle Zykluszeit Information |
| 16#8611 | ERROR_RTINFO_ACTUAL_MIN_CYCLETIME Fehler: RT INFO Lesen MIN-Zykluszeit Information |
| 16#8612 | ERROR_RTINFO_ACTUAL_MAX_CYCLETIME Fehler: RT INFO Lesen MAX Zykluszeit Information |
| 16#8620 | ERROR_RTINFO_ACTUAL_COM_LOAD Fehler: RT INFO Lesen aktuelle COM-Load-Informationen |
| 16#8630 | ERROR_RTINFO_RESET_STATISTICS Fehler: RT INFO Statistische Informationen setzen |
| 16#9000 | ERROR_RTINFO_RUNTIME_OB_CYCLIC Fehler: Lesen der RT INFO Zykluszeit Information OB + Index des OB im Array |
| 16#9100 | ERROR_RTINFO_RUNTIME_OB Fehler: Lesen RT INFO Zykluszeit Information OB + Index des OB im Array |
Dieser UDT gehört zum Modul LGF_MeasureCpuLoad und listet alle möglichen Parameter zur Konfiguration des Verhaltens auf.
| Bezeichner | Datentyp | Default Wert | Beschreibung |
|---|---|---|---|
| cfcRun | Bool | FALSE | CFC-Lauf (OB-Nr. wird nach 10xx verschoben) |
| averagingValues | USInt | 0 | Mittelwertbildung der Messwerte durch Bildung des arithmetischen Mittelwerts |
| comLoadSim | UInt | 0 | Com-Load-Simulation [%] WENN > 0.0 Wert wird für die Berechnung verwendet WENN <= 0.0 tatsächlichen Com-Load-Wert verwenden, der von der SPS gelesen wird |
| limitWarning | Real | 70.0 | Warngungs Grenzwert [%] |
| limitAlarm | Real | 100.0 | Alarm Grenzwert [%] |
| organizationBlocksCyclic | Array[0..10] of LGF_typeMeasureCpuLoad_ConfigurationBlock | --- | Zyklische Blöcke zur Messung |
| organizationBlocks | Array[0..30] of LGF_typeMeasureCpuLoad_ConfigurationBlock | --- | NICHT zyklische Blöcke zur Messung |
Konfiguration für den zu messenden Block
| Bezeichner | Datentyp | Default Wert | Beschreibung |
|---|---|---|---|
| enableMeasurement | Bool | FALSE | Messung freigeben |
| obNumber | Int | 0 | Organisation's-Baustein Nummer des zu messenden Bausteins |
| initialLoad | Real | 0.0 | Anfangslast [%], wird nur verwendet, wenn die Mittelwertbildung eingeschaltet ist |
Ergebnisse für Block gemessen
| Bezeichner | Datentyp | Default Wert | Beschreibung |
|---|---|---|---|
| obNumber | Int | 0 | Organisation Blocknummer |
| runtime | LTime | --- | Laufzeit des Organisationsblocks [ms] |
| cycleLoad | Real | 0.0 | Auslastung des Blocks berechnet über die Zykluszeit [%] |
| maxCycleLoad | Real | 0.0 | Auslastung des Blocks berechnet über die MAX-Zykluszeit [%] |
| error | Bool | FALSE | TRUE: Beim Lesen der Blockstatistik ist ein Fehler aufgetreten |
| status | Word | 16#0000 | 16#0000 - 16#7FFF: Status des `RT_INFO`, 16#8000 - 16#FFFF: Fehlererkennung |
Diagnosestruktur zur Speicherung und Übertragung von Diagnoseinformationen von Blöcken über die Schnittstelle.
| Bezeichner | Datentyp | Default Wert | Beschreibung |
|---|---|---|---|
| status | Word | 16#0000 | Status des Bausteins oder Fehleridentifikation beim Auftreten des Fehlers |
| subfunctionStatus | Word | 16#0000 | Status oder Rückgabewert von aufgerufenen FB's, FC's und Systembausteinen |
| stateNumber | DInt | 0 | Zustand in der Zustandsmaschine des Blocks, in dem der Fehler aufgetreten ist |
Mit dieser Funktion können die verschiedenen Laufzeiten von Organisationsbausteinen (OB) ausgelesen und anhand der Ergebnisse die SPS-CPU-Auslastung berechnet werden.
Die zu berücksichtigenden OBs werden in der Konfiguration angegeben und aktiviert, wobei zu beachten ist, dass zyklische und azyklische OBs in getrennten Strukturen konfiguriert werden müssen.
Es ist weiter möglich
| Version & Datum | Änderungsbeschreibung | |
|---|---|---|
| 1.0.0 | SAG BG | |
| 19.05.2024 | First Release | |
| 1.1.0 | SAG BG | |
| 06.05.2024 | Add Output with overall runtime incl. interrupts | |
| 1.1.1 | Siemens System Support | |
| 03.09.2025 | Bugfixed error in loop | |